#include <winsock2.h>
#include <variant>


class init_t {
};

class running_t {
    public : 
     unsigned count() const
     {
        return m_count;
     }
    private:
     unsigned m_count = 0;
     int m_web_pabe;
    
};

class finished_t {
    public:
        finished_t(unsigned count) : m_count(count)
        {

        }
        unsigned count() const
        {
            return m_count;
        }
    private:
        unsigned m_count;
};
class program_t {
    public:
        program_t():m_state(init_t())
        {

        }
    
        void counting_finished()
        {
            auto* state = std::get_if<running_t>( &m_state);
            m_state = finished_t(state -> count());
        }
    private:
        std::variant<init_t, running_t, finished_t> m_state;
};

int main(int argc, char *argv[])
{
    program_t p;
}

